package com.zkh.myutils.io.excel.worksheet.style;

import java.util.Objects;

/**
 * 字体相关属性，在样式文件中呈现方式为fonts节点的子节点
 * @author zkh
 */
public class Font {
	//字体
	private String fontFamily;
	//字号
	private Integer fontSize;
	//字体颜色
	private String color;
	//加粗
	private boolean bold;
	//斜体
	private boolean italic;
	//下划线
	private boolean underline;
	
	/**
	 * 无参构造方法
	 */
	public Font() {}
	/**
	 * 构造方法
	 * @param fontFamily 字体
	 */
	public Font(String fontFamily) {
		this.fontFamily = fontFamily;
	}
	/**
	 * 构造方法
	 * @param fontFamily 字体
	 * @param fontSize 字号（传null使用默认字号）
	 */
	public Font(String fontFamily, Integer fontSize) {
		this.fontFamily = fontFamily;
		this.fontSize = fontSize;
	}
	/**
	 * 构造方法
	 * @param fontFamily 字体
	 * @param bold 是否加粗，默认false
	 */
	public Font(String fontFamily, boolean bold) {
		this.fontFamily = fontFamily;
		this.bold = bold;
	}
	/**
	 * 构造方法
	 * @param fontFamily 字体
	 * @param fontSize 字号（传null使用默认字号）
	 * @param bold 是否加粗
	 */
	public Font(String fontFamily, Integer fontSize, boolean bold) {
		this.fontFamily = fontFamily;
		this.fontSize = fontSize;
		this.bold = bold;
	}
	/**
	 * 设置字体
	 * @param fontFamily 字体
	 */
	public void setFontFamily(String fontFamily) {
		this.fontFamily = fontFamily;
	}
	/**
	 * 设置字号
	 * @param fontSize 字号
	 */
	public void setFontSize(Integer fontSize) {
		this.fontSize = fontSize;
	}
	/**
	 * 设置字体颜色
	 * @param color 字体颜色
	 */
	public void setColor(String color) {
		this.color = color;
	}
	/**
	 * 设置字体加粗
	 * @param bold 加粗
	 */
	public void setBold(boolean bold) {
		this.bold = bold;
	}
	/**
	 * 设置斜体
	 * @param italic 斜体
	 */
	public void setItalic(boolean italic) {
		this.italic = italic;
	}
	/**
	 * 设置下划线
	 * @param underline 下划线
	 */
	public void setUnderline(boolean underline) {
		this.underline = underline;
	}
	/**
	 * 字体
	 * @return
	 */
	public String getFontFamily() {
		return fontFamily;
	}
	/**
	 * 字体大小
	 * @return
	 */
	public Integer getFontSize() {
		return fontSize;
	}
	/**
	 * 字体颜色
	 * @return
	 */
	public String getColor() {
		return color;
	}
	/**
	 * 加粗
	 * @return
	 */
	public boolean isBold() {
		return bold;
	}
	/**
	 * 斜体
	 * @return
	 */
	public boolean isItalic() {
		return italic;
	}
	/**
	 * 下划线
	 * @return
	 */
	public boolean isUnderline() {
		return underline;
	}
	@Override
	public int hashCode() {
		return Objects.hash(bold, color, fontFamily, fontSize, italic,
				underline);
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Font other = (Font) obj;
		return bold == other.bold && Objects.equals(color, other.color)
				&& Objects.equals(fontFamily, other.fontFamily)
				&& Objects.equals(fontSize, other.fontSize)
				&& italic == other.italic && underline == other.underline;
	}
}
